TIC-80 Specifications
TIC-80 has a number of limitations, according to the official website, GitHub wiki, and itch.io page. Technical Limitations TIC-80 is not a game engine in the technical part, but the RAM can only be manipulated based on what the built-in editors are limited to. Screen The screen is a 240x136 pixels display that doesn't have a tile-mapping, layering, and/or sprite basis. The screen is driven by the TIC-80 API (like a GPU) and takes a chunk of memory, which is almost 16 kilobytes. Each pixel is a 4-bit register that has access to up to 16 colors based on the palette mapping and palette colors. There is also an additional register that changes the border color. The entire screen is also capable of being moved without the game loop updating the framebuffer, thus two 8-bit signed registers, one for horizontal and the other for vertical. A special API function called "OVR()" is able to overlay multiple video frames into a single image, if you really wanted to make a game with more than 16 colors per scanline. The downfall is that it would need the action to perform a successive picture overlay at <60 FPS. The refresh rate of the whole system is 60Hz. The SCN() loop is called upon every scanline render, therefore being called 8160 times per second. Memory TIC-80 has 80 kilobytes of virtual RAM, derived from the screen, sound chip, and the cartridge elements loaded. It also has 1 kilobyte of persistent cartridge memory, containing 256 32-bit signed integers. More is known on the GitHub wiki. TIC-80 has a simple RAM display by typing ram into the console. Version 0.80.0 will extract the 16 kilobytes of VRAM from the 80K memory region, so that other things can be implemented in the future. Input TIC-80 has 4 controllers, mouse, and keyboard as inputs. Controllers 3 and 4, and the latter two were implemented in 0.60.0. The keyboard supports 65 key indexes with up to 4 keys being able to be pressed at a time. TIC-80 can't use the main OS's scroll wheel input during runtime. The controllers feature a D-pad and a set of ABXY buttons, like the XBox 360 setup of face buttons. There is currently no support for paddles controllers, though the paddle-based games made for TIC-80 control using directions. Sound TIC-80 has 4 channels of wavetable PSG sound, each with a 12-bit frequency container and a 4-bit volume control register. The waveforms are made up of 32 4-bit samples, playing through them from first to last. If all of the samples read 0, then the channel ignores the wavetable and plays pseudo-random binary noise. The noise wave's sample rate is an octave lower when played, compared to wavetables. Wavetables are played in Hz from the frequency value. A lookup table is used because it only divides the waveform clock internally, without using phase-accumulation. The sample rate of a waveform is 32 times that of the frequency value played. Editors Games for the TIC-80 are built within the editors and not assembly-language for a specific CPU architecture. The professional version of TIC-80, which costs $5 on itch.io, allows up to 8 banks of cartridges to be formatted into a single cartridge. Code Editor Game code is based around a format with the TIC-80 API used. There is also important metadata for hosting your game on the official website. The code in the cartridge is limited to 65536 characters. There is no token limit. Games can be coded in Lua, JavaScript, MoonScript, Wren or Fennel. BrainF*ck support is part of a mod of TIC-80, not from Nesbox. Support for the Squirrel programming language is coming up in 0.80.0. Graphics Editors There is a sprite editor and a map editor. The sprites contain a BackGround and a ForeGround bank. Each contains 256 8x8 tiles, for a total of 512 tiles in the entire cartridge. The pro version of TIC-80 allows for 8 times as many tiles as the non-pro version, thus 4096 unique tiles. The map editor consists of a 240x136 grid of cells, broken into 64 arrays of 30x17 maps each, which point to any of the 256 tiles from the BackGround spritesheet when called with map(). The pro version allows for 8 maps scattered across each bank, thus making 512 unique arrays. Audio Editors There is a sound effect editor and a music editor. The sound effect editor contains 64 sound effects, which can double as music instruments for use in the music editor. Each sound effect is composed of 30 steps on each macro, running at a 60Hz update rate. The speed can also be adjusted as a 3-bit signed integer. The pro version allows up to 512 sound effects total. There's also a waveform editor as part of the sound effect editor. There's a maximum of 16 waveforms, with up to 128 using pro's bankswitching. The music editor contains 60 patterns, with 16 to 64 rows per pattern. There are 64 frames per track, which is divided by 4 channels, resulting in 16 6-bit pattern selection integers per channel in an entire song. There can be up to 8 songs total in the cartridge. The pro version allows up to 64 songs and 480 total patterns. A single frame index with all channels at pattern 00 will mark the end of a song's data. Command Line This is unrelated directly towards cartridge editors and is used to do various actions with TIC-80. View the GitHub wiki for details. SURF SURF is a cartridge browser menu accessed by the console command of the same name. The name is derived from "surfing the internet for TIC-80 cartridges". This browser only accesses tic.computer/play cartridges and local cartridges and folders stored in the default folder. The pro version can also access standalone game files in text format within the menu. Support for itch.io cartridges and popular/new sortingLocal carts are always sorted in alphabetical order. are probably planned for a future version. Facts and Trivia # TIC-80 is prone to crashing upon attempting to access tic.computer/play with modified network permissions. # Cartridges are cached with a hexadecimal string in the name of the .tic file. However, the SURF browser cannot enter the ".local" directory alone, making users have to change the directory from the console using cd .local, and eventually select the cached cartridge from SURF. Supported Platforms The TIC-80 GitHub repository has official binaries for Windows, OSX, Linux (64-bit), and Android. Other platforms, such as the Raspberry Pi or Pocket CHIP, will need to be compiled manually. Footnotes Category:TIC-80 Category:Technical Information